﻿using System;

namespace Eassets.Layered.Domain.Asset
{
    [Serializable]
    public class CompanyAsset
    {
        #region Fields

        /// <summary>
        /// The Company Asset Id of the CompanyAssets.
        /// </summary>
        private long companyAssetId;
        /// <summary>
        /// The Organization Level List Id of the CompanyAssets.
        /// </summary>
        private long organizationLevelListId;
        /// <summary>
        /// The Asset Id of the CompanyAssets.
        /// </summary>
        private long assetId;
        /// <summary>
        /// The Is Asset Depreciable of the CompanyAssets.
        /// </summary>
        private bool isAssetDepreciable;
        /// <summary>
        /// The Life Time of the CompanyAssets.
        /// </summary>
        private long lifeTime;
        /// <summary>
        /// The Life Time Unit Of Measure Id of the CompanyAssets.
        /// </summary>
        private long lifeTimeUnitOfMeasureId;
        /// <summary>
        /// The Depreciation Method Id of the CompanyAssets.
        /// </summary>
        private long depreciationMethodId;
        /// <summary>
        /// The Depreciation Rate of the CompanyAssets.
        /// </summary>
        private decimal depreciationRate;
        /// <summary>
        /// The Residual Value of the CompanyAssets.
        /// </summary>
        private decimal residualValue;
        /// <summary>
        /// The Asset Serial Format of the CompanyAssets.
        /// </summary>
        private string assetSerialFormat = string.Empty;
        /// <summary>
        /// The Barcode of the CompanyAssets.
        /// </summary>
        private string barcode = string.Empty;



        private Assets asset;

        /// <summary>
        /// The asset Creation Date
        /// </summary>
        private DateTime sys_DateCreation;
        /// <summary>
        /// Asset Modify Date
        /// </summary>
        private DateTime sys_DateLastModification;
        #endregion

        #region Properties


        /// <summary>
        /// Gets or sets the Company Asset Id of the CompanyAssets.
        /// </summary>
        /// <value>
        /// The Company Asset Id of the CompanyAssets.
        /// </value>
        public long CompanyAssetId
        {
            get
            {
                return this.companyAssetId;
            }
            set
            {
                this.companyAssetId = value;
            }
        }

        /// <summary>
        /// Gets or sets the Organization Level List Id of the CompanyAssets.
        /// </summary>
        /// <value>
        /// The Organization Level List Id of the CompanyAssets.
        /// </value>
        public long OrganizationLevelListId
        {
            get
            {
                return this.organizationLevelListId;
            }
            set
            {
                this.organizationLevelListId = value;
            }
        }

        /// <summary>
        /// Gets or sets the Asset Id of the CompanyAssets.
        /// </summary>
        /// <value>
        /// The Asset Id of the CompanyAssets.
        /// </value>
        public long AssetId
        {
            get
            {
                return this.assetId;
            }
            set
            {
                this.assetId = value;
            }
        }

        /// <summary>
        /// Gets or sets the Is Asset Depreciable of the CompanyAssets.
        /// </summary>
        /// <value>
        /// The Is Asset Depreciable of the CompanyAssets.
        /// </value>
        public bool IsAssetDepreciable
        {
            get
            {
                return this.isAssetDepreciable;
            }
            set
            {
                this.isAssetDepreciable = value;
            }
        }

        /// <summary>
        /// Gets or sets the Life Time of the CompanyAssets.
        /// </summary>
        /// <value>
        /// The Life Time of the CompanyAssets.
        /// </value>
        public long LifeTime
        {
            get
            {
                return this.lifeTime;
            }
            set
            {
                this.lifeTime = value;
            }
        }

        /// <summary>
        /// Gets or sets the Life Time Unit Of Measure Id of the CompanyAssets.
        /// </summary>
        /// <value>
        /// The Life Time Unit Of Measure Id of the CompanyAssets.
        /// </value>
        public long LifeTimeUnitOfMeasureId
        {
            get
            {
                return this.lifeTimeUnitOfMeasureId;
            }
            set
            {
                this.lifeTimeUnitOfMeasureId = value;
            }
        }

        /// <summary>
        /// Gets or sets the Depreciation Method Id of the CompanyAssets.
        /// </summary>
        /// <value>
        /// The Depreciation Method Id of the CompanyAssets.
        /// </value>
        public long DepreciationMethodId
        {
            get
            {
                return this.depreciationMethodId;
            }
            set
            {
                this.depreciationMethodId = value;
            }
        }

        /// <summary>
        /// Gets or sets the Depreciation Rate of the CompanyAssets.
        /// </summary>
        /// <value>
        /// The Depreciation Rate of the CompanyAssets.
        /// </value>
        public decimal DepreciationRate
        {
            get
            {
                return this.depreciationRate;
            }
            set
            {
                this.depreciationRate = value;
            }
        }

        /// <summary>
        /// Gets or sets the Residual Value of the CompanyAssets.
        /// </summary>
        /// <value>
        /// The Residual Value of the CompanyAssets.
        /// </value>
        public decimal ResidualValue
        {
            get
            {
                return this.residualValue;
            }
            set
            {
                this.residualValue = value;
            }
        }

        /// <summary>
        /// Gets or sets the Asset Serial Format of the CompanyAssets.
        /// </summary>
        /// <value>
        /// The Asset Serial Format of the CompanyAssets.
        /// </value>
        public string AssetSerialFormat
        {
            get
            {
                return this.assetSerialFormat;
            }
            set
            {
                this.assetSerialFormat = value;
            }
        }

        /// <summary>
        /// Gets or sets the Barcode of the CompanyAssets.
        /// </summary>
        /// <value>
        /// The Barcode of the CompanyAssets.
        /// </value>
        public string Barcode
        {
            get
            {
                return this.barcode;
            }
            set
            {
                this.barcode = value;
            }
        }


        public Assets Asset
        {
            get
            {
                return this.asset;
            }
            set
            {
                this.asset = value;
            }
        }

        public DateTime SysDateCreation
        {
            get
            {
                return this.sys_DateCreation;
            }
            set
            {
                this.sys_DateCreation = value;
            }
        }

        public DateTime SysDateLastModification
        {
            get
            {
                return this.sys_DateLastModification;
            }
            set
            {
                this.sys_DateLastModification = value;
            }
        }
        #endregion
    }
}
